home *** CD-ROM | disk | FTP | other *** search
/ Aminet 38 / Aminet 38 (2000)(Schatztruhe)[!][Aug 2000].iso / Aminet / dev / basic / BlitzASMInclud.lha / BlitzASMInclude / Src / LotanSystem.a < prev    next >
Encoding:
Text File  |  2000-02-26  |  3.3 KB  |  119 lines

  1.     INCLUDE "Blitz.i"
  2.     INCLUDE "lib/exec.i"
  3.     INCLUDE "lib/dos.i"
  4.  
  5.     libheader   195,0,0,Exit,LibErrs
  6.  
  7.     afunction   word
  8.         args
  9.         libs    doslib,la6
  10.         subs    _CtrlC,0,0
  11.     name       "CtrlC"," - Returns True if a CTRL/C has been received"
  12.  
  13.     afunction   long
  14.         args    long
  15.         libs    execlib,la6
  16.         subs    _New,0,0
  17.  
  18.         args    long,long
  19.         libs    execlib,la6
  20.         subs    _New_a,0,0
  21.     name        "New","(Size[,Type]) - Allocates Memory"
  22.  
  23.     astatement
  24.         args    long
  25.         libs    execlib,la6
  26.         subs    _Dispose,0,0
  27.     name        "Dispose","(Addr) - Deallocates previously allocated memory"
  28.  
  29.     acommand    word
  30.         args
  31.         libs    execlib,la0
  32.         subs    _KickVersion,0,0
  33.  
  34.         args    word
  35.         libs    execlib,la0
  36.         subs    _KickVersion_a,0,0
  37.     name       "KickVersion","[(Ver)] - Used to Check/Get Kickstart version."
  38.  
  39.     afunction  long
  40.         args
  41.         libs    execlib,ld0
  42.         subs    _execbase,0,0
  43.     name       "execbase","- Returns pointer to Exec library base."
  44.  
  45. Exit:   nullsub LibExit,0,0, execlib,la6
  46.  
  47.     libfin
  48.  
  49. ****************************************************************************************
  50.  
  51. _New:
  52.     MOVE.L  #$10000,d1                  ; d1 := #MEMF_CLEAR
  53. _New_a:
  54.     ADDQ.L  #8,d0                       ; d0 := Size + 8
  55.     MOVE.L  d0,d2                       ; d2 := d0
  56.     Call    AllocMem
  57.     TST.L   d0
  58.     BEQ.B   1$                          ; AllocMem() failed
  59.     MOVEA.L d0,a0                       ; a0 := MemPtr
  60.     MOVE.L  d2,4(a0)                    ; Save Size
  61.     MOVE.L  __MemEntry(pc),(a0)
  62.     MOVE.L  d0,__MemEntry               ; Save last allocated in d0
  63.     ADDQ.L  #8,d0                       ; d0 := MemPtr + 8
  64. 1$  RTS
  65.  
  66. _Dispose:
  67.     TST.L   d0
  68.     BEQ.B   2$                          ; Nothing to Dispose
  69.     SUBQ.L  #8,d0                       ; d0 := Real MemPtr
  70.     LEA     __MemEntry(pc),a1           ; a1 := MemList
  71. 1$  MOVE.L  (a1),d1                     ; d1 := Ptr to last MemChunk allocated
  72.     BEQ.B   2$                          ; NULL when no memory have been allocated yet
  73.     MOVEA.L a1,a2                       ; a2 := MemList
  74.     MOVEA.L d1,a1                       ; a1 := Ptr to last MemChunk allocated
  75.     CMP.L   d1,d0                       ; is Arg Ptr to last MemSize allocated ?
  76.     BNE.B   1$                          ; No : Arg <> Ptr to...
  77.     MOVE.L  4(a1),d0                    ; d0 := MemSize
  78.     MOVE.L  (a1),(a2)                   ; Save Next MemChunk in MemList
  79.     Call    FreeMem
  80. 2$  RTS
  81.  
  82. _CtrlC:
  83.     MOVE.L  #$1000,d1
  84.     Call    CheckSignal
  85.     RTS
  86.  
  87. _KickVersion:
  88.     MOVE.W  20(a0),d0
  89.     RTS
  90. _KickVersion_a:
  91.     CMP.W   20(a0),d0
  92.     BGE     Oops
  93.     MOVEQ   #-1,d0
  94. _execbase:
  95.     RTS
  96.  
  97. Oops:
  98.     MOVEQ   #0,d0
  99.     RTS
  100.  
  101. LibExit:
  102.     MOVEA.L __MemEntry(pc),a2
  103.     MOVE.L  a2,d0
  104.     BEQ.B   2$                          ; No MemList
  105. 1$  MOVEA.L a2,a1                       ; a1 := MemPtr
  106.     MOVE.L  4(a2),d0                    ; d0 := MemSize
  107.     MOVEA.L (a2),a2                     ; a2 := Next MemChunk
  108.     Call    FreeMem                     ; (a1/d0)
  109.     MOVE.L  a2,d0                       ; d0 := Next MemChunk
  110.     BNE.B   1$                          ; d0 <> NULL
  111. 2$  RTS
  112.  
  113. __MemEntry
  114.     Dc.l    0
  115.  
  116. LibErrs:
  117.     Dc.b    "$VER: Lotan's System Library 0.12 (17-04-99),0
  118.     Even
  119.